package com.wgh.product.converter;

import com.wgh.product.dto.BrandDTO;
import com.wgh.product.entity.shop.Brand;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

/**
 * 品牌对象转换器
 * 用于Brand实体和BrandDTO之间的转换
 */
@Component
public class BrandConverter {

    /**
     * 将Brand实体转换为BrandDTO
     * @param brand 品牌实体
     * @return 品牌DTO
     */
    public BrandDTO toDTO(Brand brand) {
        if (brand == null) {
            return null;
        }
        
        BrandDTO brandDTO = new BrandDTO();
        brandDTO.setId(brand.getId());
        brandDTO.setName(brand.getName());
        brandDTO.setLogo(brand.getLogo());
        brandDTO.setDescription(brand.getDescription());
        brandDTO.setWebsite(brand.getWebsite());
        brandDTO.setSort(brand.getSort());
        brandDTO.setStatus(brand.getStatus());
        brandDTO.setCreateTime(brand.getCreateTime());
        brandDTO.setUpdateTime(brand.getUpdateTime());
        
        return brandDTO;
    }
    
    /**
     * 将BrandDTO转换为Brand实体
     * @param brandDTO 品牌DTO
     * @return 品牌实体
     */
    public Brand toEntity(BrandDTO brandDTO) {
        if (brandDTO == null) {
            return null;
        }
        
        Brand brand = new Brand();
        brand.setId(brandDTO.getId());
        brand.setName(brandDTO.getName());
        brand.setLogo(brandDTO.getLogo());
        brand.setDescription(brandDTO.getDescription());
        brand.setWebsite(brandDTO.getWebsite());
        brand.setSort(brandDTO.getSort());
        brand.setStatus(brandDTO.getStatus());
        brand.setCreateTime(brandDTO.getCreateTime());
        brand.setUpdateTime(brandDTO.getUpdateTime());
        
        return brand;
    }
    
    /**
     * 将Brand实体列表转换为BrandDTO列表
     * @param brands 品牌实体列表
     * @return 品牌DTO列表
     */
    public List<BrandDTO> toDTOList(List<Brand> brands) {
        if (brands == null || brands.isEmpty()) {
            return new ArrayList<>();
        }
        
        List<BrandDTO> brandDTOs = new ArrayList<>(brands.size());
        for (Brand brand : brands) {
            brandDTOs.add(toDTO(brand));
        }
        
        return brandDTOs;
    }
    
    /**
     * 将BrandDTO列表转换为Brand实体列表
     * @param brandDTOs 品牌DTO列表
     * @return 品牌实体列表
     */
    public List<Brand> toEntityList(List<BrandDTO> brandDTOs) {
        if (brandDTOs == null || brandDTOs.isEmpty()) {
            return new ArrayList<>();
        }
        
        List<Brand> brands = new ArrayList<>(brandDTOs.size());
        for (BrandDTO brandDTO : brandDTOs) {
            brands.add(toEntity(brandDTO));
        }
        
        return brands;
    }
}